考慮了一下,還是把價格給加上去好了(因為他跟商品數量的處理應該是差不多麻煩)
新建立一個 s_buy.php
然後把昨天"購買按鈕"那邊修改成這樣 (客戶端都是沿用 Hello.php)
<td>
<a href="s_buy.php?BUT_IT=<?php echo $row['product_id'];?>"
class="badge badge-info">
購買
</a>
</td>
然後是 s_buy.php 的東西【純列印(不含處理資料表),我找到一個很讚的JS(不是我寫的),用來限定商品數量必須為正整數】
【記得用 FORM標籤包起來,等等才能錯處理資料表的內容】
下面$p_name = $row['product_name'];
$p_price = $row['product_price'];
$p_amount = $row['product_amount'];
都是之後購物車會用到的(沒意外的話),所以先這樣寫。
<body>
<form method="POST">
<div class="container">
<?php
$P_ID = $_GET['BUT_IT'];
$query = "SELECT * FROM s_product WHERE product_id='$P_ID' ";
$query_run = mysqli_query($con,$query);
?>
<?php
if(mysqli_num_rows($query_run) > 0)
{
foreach($query_run as $row)
{
$p_name = $row['product_name'];
$p_price = $row['product_price'];
$p_amount = $row['product_amount'];
?>
<input type="hidden" name="P_ID" value="<?php echo $row['product_id'];?>">
<label>商品:</label><?php echo "$p_name";?><br>
<label>價格:</label><?php echo "$p_price";?><br>
<label>剩餘數量:</label><?php echo "$p_amount";?><br>
<label>欲購買數量:</label>
<input type="text"
placeholder="輸入商品數量"
value="1"
name="buy_amount"
onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"/>
<button name="buy_it_btn">加到購物車</button><br>
<label>商品明細:</label><?php echo $row['product_detail'];?>
<?php
}
}
else
{
echo "沒有該商品 (照理來講不應該會觸發這一行)";
}
?>
</div>
</form>
</body>
然後是剩餘數量減少的php【這次的php 要寫在列印的程式碼下面,不然會出錯】
以及若"購買數量"大於"剩餘數量" 就會購買失敗(以下是我想到最陽春的解決辦法,我覺得一定有瑕疵,但還沒想到更好的,如果有之後再補上)
<?php
/*按下"送出購買"*/
if(isset($_POST['buy_it_btn']))
{
$buy_amount = $_POST['buy_amount'];
$p_id =$_POST['P_ID'];
//最終數量 = 剩餘數量 - 購買數量
$f_amount = $p_amount - $buy_amount;
//若 最終數量 > 0 ,才會更新資料庫數據。
if($f_amount > 0)
{
$query2="UPDATE s_product
SET product_amount ='$f_amount'
WHERE product_id ='$p_id' ";
}
//若 資料庫數據成功更新了,則購買成功;反之購買失敗。
$query_run2 = mysqli_query($con,$query2);
if($query_run2)
{
$_SESSION['status'] =" 購買成功!!!!!!!!!!";
header('Location: Hello.php');
}
else
{
$_SESSION['status'] =" 剩餘數量不足,購買失敗~~";
header('Location: Hello.php');
}
}
?>
今天先這樣,下次見。